package com.chat.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chat.admin.domain.DTO.ADD.AddRoleDTO;
import com.chat.admin.domain.DTO.EDIT.EditRoleDTO;
import com.chat.admin.domain.DTO.RoleDTO;
import com.chat.admin.domain.VO.RoleVO;
import com.chat.common.entity.Role;
import com.chat.common.form.ListForm;
import com.chat.common.vo.R;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author weikjie
 * @since 2024-05-06
 */
public interface IRoleService extends IService<Role> {

    /**
     * 获取全部角色
     * @param roleDTO
     * @return
     */
    R<ListForm<RoleVO>> getRoleList(RoleDTO roleDTO);

    /**
     * 新增角色
     * @param addroleDTO
     * @return
     */
    R insertRole(AddRoleDTO addroleDTO);

    /**
     * 更新角色
     * @param editroleDTO
     * @return
     */
    R updateRole(EditRoleDTO editroleDTO);

    /**
     * 启用角色
     * @param ID
     * @return
     */
    R<?> EnableRole(Long ID);

    /**
     * 禁用角色
     * @param ID
     * @return
     */
    R<?> DisableRole(Long ID);

    /**
     * 获取可用角色列表
     * @return
     */
    List<Role> getStateRoles();

    /**
     * 获取可用角色列表
     * @return
     */
    Map<Long, Role> getStateRolesMap();

    /**
     * 判断当前角色id是否可以用
     * @param roleID
     * @return
     */
    Boolean isRoleValid(Long roleID);
}
